Материалы
11 лет назад
Оптимизация карты. Ареапорталы
Продолжение урока про оптимизацию. На этот раз мы научимся использовать ареапорталы
Всем привет, сегодня мы поговорим об ареапорталах (англ. area - область). Ареапорталы можно (и нужно!) использовать для оптимизации. Как вы узнали из предыдущего тутора, туман помогает оптимизировать карту, отсекая ненужное пространство. Ареапорталы делают то же самое.
Ареапортал - энтити-браш func_areaportal или func_areaportalwindow, покрашенный со всех сторон в текстуру TOOLS/TOOLSAREAPORTAL. Свойства энтити func_areaportal(func_areaportalwindow мы рассмотрим в следующих туториалах):
Initial State. (Closed/Opened). Состояние ареапортала (открыт/закрыт). Когда ареапортал открыт, он никак не обнаруживает себя, а когда закрыт, то область за ареапорталом отрисовываться не будет, даже если игрок смотрит на неё
Linked Door Name. Имя двери для управления ареапорталом. Ареапортал можно привязать к двери, и, когда дверь открыта, то он будет в состоянии Opened, а когда закрыта - в состоянии Closed
Ареапортал открыт:
Ареапортал закрыт:
Оптимизируем карту с помощью ареапорталов
Ищем двери и другие энтити-объекты, за которыми огромные пространства и которые не должны отрисовываться движком, если дверь закрыта или через этот энтити-объект всё равно ничего не будет видно
Создаём ареапортал внутри двери. Следует учесть некоторые моменты: ареапортал должен быть обязательно параллелепипедом (не вертексом, не пирамидой!), всеми четырьмя боковыми сторонами должен касаться world-геометрии (т.е. обыкновенными брашами) и полностью закрывать проём между геометрией, ареапортал должен быть внутри двери и не торчать наружу (его не должно быть видно в Хаммере), так как тогда вместо двери будет видно небо, как на скрине выше (например, если толщина двери 4 юнита, то ареапортал должен быть 2 юнита и находится в середине двери)
Если вы создали ареапортал для двери, то дайте ей имя и пропишите это имя в параметре Linked Door Name вашего ареапортала. Параметр Initial State при этом использоваться не будет. Если же вам нужно, чтобы ареапортал был всегда открыт/закрыт, то поставьте соответствующее значение Initial State, а Linked Door Name оставьте пустым. Вы также можете динамически изменять состояние ареапортала во время игры, обращаясь к нему по параметру Name. Это мы рассмотрим позже
И вот ещё что. Ареапортал должен закрывать замкнутую область. Например, есть комната, в неё можно зайти только через одну дверь. Ставим ареапортал в этой двери. Всё будет работать без ошибок. Но если в эту комнату есть ещё один вход, то возникнет ошибка leak (т.к. ареапорталы работают по принципу чёрной пустоты, то, что за ними, подразумевается пустотой и в неё может быть точно такая же утечка)
При этом карта будет скомпилирована компилятором vvis.exe, так что вы можете ничего не заметить. Но при загрузке игры, если таких неправильных ареапорталов больше 2, вылетит ошибка "Portalnum > numareaportals". Поэтому тщательно проверяйте карту и загружайте в Хаммере lin-файл, который создаётся, если на карте есть leak. Загрузить этот файл можно в меню Map -> Load Pointfile
Комментарии пользователей сайта:
Если Вам понравилась эта страница, Вы можете разместить где-нибудь ссылку на неё: